from Class_Usuario import *
from Class_ConexaoDB import *
from Class_Endereco import *
from Class_Contato import *

# -*- coding: cp1252 -*-

class GerenciadorUsuario:
    def __init__(self):
        self.Conexao = ConexaoDB()
        
    def Cadastrar(self, Usuario):
        confirmacao = self.CadastrarLogin(Usuario)
        if confirmacao == True:
            confirmacao = self.CadastrarContato(Usuario)
            if confirmacao == True:
                confirmacao = self.CadastrarEndereco(Usuario)
                if confirmacao == True:
                    confirmacao = self.CadastrarUsuario(Usuario)
        return confirmacao 

    def CadastrarEndereco(self, Usuario):
        Endereco = Usuario.GetEndereco()
        
        Logradouro = Endereco.GetLogradouro()
        Numero = Endereco.GetNumero()
        Complemento = Endereco.GetComplemento()
        Bairro = Endereco.GetBairro()
        Cidade = Endereco.GetCidade()
        Estado = Endereco.GetEstado()
        Pais = Endereco.GetPais()
        CEP = Endereco.GetCEP()

        comando = '''
INSERT INTO Endereco (Logradouro, Numero, Complemento, Bairro, Cidade,
Estado, Pais, Cep) VALUES ('%s','%s','%s','%s','%s','%s','%s','%s')
'''%(Logradouro, Numero, Complemento, Bairro, Cidade, Estado, Pais, CEP)
        confirmacao = self.Conexao.ExecutarComando(comando)

        return confirmacao

    def CadastrarLogin(self, Usuario):
        Login = Usuario.GetLogin()
        Senha = Usuario.GetSenha()

        comando = '''
INSERT INTO Acesso (Login, Senha) VALUES ('%s','%s')
'''%(Login, Senha)
        confirmacao = self.Conexao.ExecutarComando(comando)
        return confirmacao

    def CadastrarContato(self, Usuario):
        Contato = Usuario.GetContato()
        Telefone1 = Contato.GetTelefone1()
        Telefone2 = Contato.GetTelefone2()
        Telefone3 = Contato.GetTelefone3()
        Email = Contato.GetEmail()

        comando = '''
INSERT INTO Contato (Telefone1, Telefone2, Telefone3, Email)
VALUES ('%s','%s','%s','%s')
'''%(Telefone1, Telefone2, Telefone3, Email)
        confirmacao = self.Conexao.ExecutarComando(comando)

        return confirmacao
        


    def CadastrarUsuario(self, Usuario):
        Nome = Usuario.GetNome()
        Sobrenome = Usuario.GetSobrenome()
        DataNasc = Usuario.GetDataNasc()

        comando = "SELECT Max(Id) FROM Endereco"
        IdEndereco = self.Conexao.ExecutarComandoRetorno(comando)
        IdEndereco = IdEndereco[0][0]
        

        comando = "SELECT Max(Id) FROM Contato"
        IdContato = self.Conexao.ExecutarComandoRetorno(comando)[0][0]

        comando = "SELECT Max(Id) FROM Acesso"
        IdAcesso = self.Conexao.ExecutarComandoRetorno(comando)[0][0]

        comando = '''
INSERT INTO Usuario
(Nome, Sobrenome, data_nascimento, Id_endereco, Id_Contato, Id_Acesso)
VALUES ('%s','%s','%s','%s','%s','%s')
'''%(Nome, Sobrenome, DataNasc,IdEndereco, IdContato, IdAcesso)
        
        confirmacao = self.Conexao.ExecutarComando(comando)
        

        return confirmacao


    def PesquisarUsuario(self, campo, dado):
        comando = '''
SELECT * FROM Usuario WHERE %s Like '%s'
'''%(campo, dado)
        
        lista = self.Conexao.ExecutarComandoRetorno(comando)
        return lista
    
    def PesquisarContato(self, campo, dado):
        comando = '''
SELECT * FROM Contato WHERE %s Like '%s'
'''%(campo, dado)
        
        lista = self.Conexao.ExecutarComandoRetorno(comando)
        return lista
 
    def PesquisarAcesso(self, campo, dado):
        comando = '''
SELECT * FROM Acesso WHERE %s Like '%s'
'''%(campo, dado)
        
        lista = self.Conexao.ExecutarComandoRetorno(comando)
        return lista
    
    def PesquisarEndereco(self, campo, dado):
        comando = '''
SELECT * FROM Endereco WHERE %s Like '%s'
'''%(campo, dado)
        
        lista = self.Conexao.ExecutarComandoRetorno(comando)
        return lista
    


    def ExcluirUsuario(self, IdUsuario, IdEndereco, IdContato, IdAcesso):
        comando = '''
DELETE FROM Endereco WHERE ID = '%s'
'''%(IdEndereco)
        self.Conexao.ExecutarComando(comando)

        comando = '''
DELETE FROM Acesso WHERE ID = '%s'
'''%(IdAcesso)
        self.Conexao.ExecutarComando(comando)

        comando = '''
DELETE FROM Contato WHERE ID = '%s'
'''%(IdContato)
        self.Conexao.ExecutarComando(comando)

        comando = '''
DELETE FROM Usuario WHERE ID = '%s'
'''%(IdUsuario)
        
        confirmacao = self.Conexao.ExecutarComando(comando)
        return confirmacao

    def EditarUsuario(self, Usuario, IdAcesso, IdContato, IdEndereco):
        IdUsuario = Usuario.GetID()
        Contato = Usuario.GetContato()
        
        Telefone1 = Contato.GetTelefone1()
        Telefone2 = Contato.GetTelefone2()
        Telefone3 = Contato.GetTelefone3()
        Email = Contato.GetEmail()

        Endereco = Usuario.GetEndereco()
        
        Logradouro = Endereco.GetLogradouro()
        Numero = Endereco.GetNumero()
        Complemento = Endereco.GetComplemento()
        Bairro = Endereco.GetBairro()
        Cidade = Endereco.GetCidade()
        Estado = Endereco.GetEstado()
        Pais = Endereco.GetPais()
        CEP = Endereco.GetCEP()
        
        comando = '''
UPDATE Usuario SET Nome = '%s', sobrenome = '%s', data_nascimento = '%s'
WHERE id = '%s'
'''%(Usuario.GetNome(), Usuario.GetSobrenome(), Usuario.GetDataNasc(), IdUsuario)

        print self.Conexao.ExecutarComando(comando)

        comando = '''
UPDATE Acesso SET login = '%s', senha = '%s'
WHERE id = '%s'
'''%(Usuario.GetLogin(), Usuario.GetSenha(), IdAcesso)
        print self.Conexao.ExecutarComando(comando)

        comando = '''
UPDATE Contato SET telefone1 = '%s', telefone2 = '%s', telefone3 =  '%s',
email = '%s' WHERE id = '%s'
'''%(Telefone1, Telefone2, Telefone3, Email, IdContato)
        print self.Conexao.ExecutarComando(comando)

        comando = '''
UPDATE Endereco SET logradouro = '%s', numero = '%s', complemento = '%s',
bairro = '%s', cidade = '%s', estado = '%s', cep = '%s', pais = '%s'
WHERE id = '%s'
'''%(Logradouro, Numero, Complemento, Bairro, Cidade, Estado, CEP, Pais, IdEndereco)
        print self.Conexao.ExecutarComando(comando)
    

C = Contato('3241-1111','3241-2222','3241-3333','jooa@hotm.com')
E = Endereco('Rua do ...','123123','','Bairro','Cidade','Estado','Pais','CEP')
U = Usuario('Nome','Sobrenome','2000-11-11','Login2','Senha',C,E)
